package com.atguigu.gmall.product.service;

import com.atguigu.gmall.model.product.SkuInfo;
import com.baomidou.mybatisplus.core.metadata.IPage;

import java.math.BigDecimal;
import java.util.Map;

/***
 * sku信息表service层接口
 */
public interface SkuInfoService {
    /**
     * 保存数据
     * @param skuInfo
     */
    void save(SkuInfo skuInfo);

    /**
     * 分页查询
     * @param pageNum
     * @param size
     * @return
     */
    IPage<SkuInfo> listPage(Integer pageNum, Integer size);

    /**
     * 商品上架
     * @param skuId
     */
    void upOrDown(Long skuId,Short status);

    /**
     * 主键查询
     * @param skuId
     * @return
     */
    SkuInfo getBySkuId(Long skuId);

    /**
     * 优化查询，使用redis缓存
     * @param skuId
     * @return
     */
    SkuInfo getBySkuIdByRedisOrMySql(Long skuId);



    /**
     * 根据skuId查询价格
     * @param skuId
     * @return
     */
    BigDecimal getSkuInfoPriceBySkuId(Long skuId);

    /**
     * 订单生成减库存
     * @param decountMap
     * @return
     */
    Boolean decount(Map<Object,Object> decountMap);

    /**
     * 取消订单，回滚商品库存
     * @param skuIdAndSkuNumMap
     * @return
     */
    Boolean rollbackStock(Map<String, Object> skuIdAndSkuNumMap);
}
